Pagination Class ব্যবহার করে Pagination তৈরি করা

Web Development - কোডইগনাইটার (Codeigniter) - CodeIgniter এর Pagination এবং Search Functionality |

CodeIgniter-এর Pagination Class ব্যবহার করে বড় ডেটাসেটকে পৃষ্ঠাভিত্তিক বিভক্ত করে প্রদর্শন করা যায়। এটি ডেটাবেস থেকে রেকর্ড ফিল্টার এবং ডায়নামিক পেজ লিংক তৈরিতে সহায়ক।


Pagination তৈরির ধাপসমূহ

১. Controller তৈরি

Controller-এ Pagination সেটআপ এবং ডেটা লোড করার কোড লিখতে হবে।

উদাহরণ:
<?php

namespace App\Controllers;

use App\Models\ProductModel;

class ProductController extends BaseController
{
    public function index()
    {
        $productModel = new ProductModel();

        // Pagination কনফিগারেশন
        $data['products'] = $productModel->paginate(10); // প্রতি পৃষ্ঠায় ১০টি রেকর্ড
        $data['pager'] = $productModel->pager; // Pagination লিংক তৈরির জন্য

        return view('product_list', $data);
    }
}

২. View তৈরি

Pagination লিংক এবং ডেটা প্রদর্শনের জন্য View ফাইল তৈরি করতে হবে।

উদাহরণ:

app/Views/product_list.php ফাইল:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Product List</title>
</head>
<body>
    <h1>Product List</h1>

    <ul>
        <?php if (!empty($products)): ?>
            <?php foreach ($products as $product): ?>
                <li><?= esc($product['name']); ?> - <?= esc($product['price']); ?></li>
            <?php endforeach; ?>
        <?php else: ?>
            <li>No products found.</li>
        <?php endif; ?>
    </ul>

    <!-- Pagination লিংক -->
    <?= $pager->links(); ?>
</body>
</html>

৩. Model তৈরি

Pagination পরিচালনার জন্য Model তৈরি করতে হবে।

উদাহরণ:

app/Models/ProductModel.php ফাইল:

<?php

namespace App\Models;

use CodeIgniter\Model;

class ProductModel extends Model
{
    protected $table = 'products';
    protected $primaryKey = 'id';
    protected $allowedFields = ['name', 'price'];
}

Pagination কনফিগারেশন (ঐচ্ছিক)

Pagination-এর চেহারা এবং কার্যকারিতা কাস্টমাইজ করতে app/Config/Pager.php ফাইলটি ব্যবহার করতে পারেন।

উদাহরণ: কনফিগারেশন পরিবর্তন

public $defaultFull = [
    'full_tag_open'  => '<nav><ul class="pagination">',
    'full_tag_close' => '</ul></nav>',
    'first_tag_open' => '<li>',
    'first_tag_close'=> '</li>',
    'last_tag_open'  => '<li>',
    'last_tag_close' => '</li>',
    'next_tag_open'  => '<li>',
    'next_tag_close' => '</li>',
    'prev_tag_open'  => '<li>',
    'prev_tag_close' => '</li>',
    'cur_tag_open'   => '<li class="active"><a href="#">',
    'cur_tag_close'  => '</a></li>',
    'num_tag_open'   => '<li>',
    'num_tag_close'  => '</li>',
];

Custom Pagination লিংক

Pagination লিংক কাস্টমাইজ করতে $pager->makeLinks() ব্যবহার করতে পারেন।

উদাহরণ:

<?= $pager->makeLinks($currentPage, $perPage, $total, 'bootstrap_full'); ?>

Bootstrap দিয়ে Pagination Styling

Bootstrap ক্লাস ব্যবহার করে Pagination লিংক স্টাইলিং করা যায়।

উদাহরণ:

public $defaultFull = [
    'full_tag_open'  => '<ul class="pagination">',
    'full_tag_close' => '</ul>',
    'first_tag_open' => '<li class="page-item">',
    'first_tag_close'=> '</li>',
    'last_tag_open'  => '<li class="page-item">',
    'last_tag_close' => '</li>',
    'next_tag_open'  => '<li class="page-item">',
    'next_tag_close' => '</li>',
    'prev_tag_open'  => '<li class="page-item">',
    'prev_tag_close' => '</li>',
    'cur_tag_open'   => '<li class="page-item active"><a class="page-link" href="#">',
    'cur_tag_close'  => '</a></li>',
    'num_tag_open'   => '<li class="page-item">',
    'num_tag_close'  => '</li>',
    'attributes'     => ['class' => 'page-link'],
];

সম্পূর্ণ উদাহরণ

Controller:

public function index()
{
    $productModel = new ProductModel();
    $data['products'] = $productModel->paginate(10);
    $data['pager'] = $productModel->pager;

    return view('product_list', $data);
}

View:

<ul>
    <?php foreach ($products as $product): ?>
        <li><?= esc($product['name']); ?> - <?= esc($product['price']); ?></li>
    <?php endforeach; ?>
</ul>
<?= $pager->links(); ?>

Model:

<?php

namespace App\Models;

use CodeIgniter\Model;

class ProductModel extends Model
{
    protected $table = 'products';
    protected $primaryKey = 'id';
    protected $allowedFields = ['name', 'price'];
}

সারাংশ

CodeIgniter-এ Pagination Class ব্যবহার করে বড় ডেটাসেটকে পৃষ্ঠাভিত্তিক বিভক্ত করা সহজ। Default Pagination, Custom Pagination, এবং Bootstrap Styling ব্যবহার করে এটি আরও কার্যকর ও আকর্ষণীয় করা যায়।

Content added By
Promotion